home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-12-26 | 17.8 KB | 367 lines | [TEXT/KAHL] |
- THE QUICK SKINNY ON 4PLUS 1.4...
-
- This document is for users of older versions of 4Plus. It basically is a list
- of the enhancements and bug fixes implemented since the first release. Starting
- with version 1.4 it occurred to me that it would be nice to preface each list of
- changes with the version number within which such changes were made, so I have
- done this. This occurs somewhere down below, so users of version 1.3 can skip
- directly to that.
-
- /* THE OPTIONS MENU */
-
- It's now in the menu bar, by popular demand. And since it's in the menu bar,
- there's no need for it to be invoked like the other 4Plus menus, so you won't
- find it listed in the configuration dialog.
-
- /* THE OTHER MENUS */
-
- You could always configure a menu to be invoked by wInZoomIn, wInGoAway, and
- wInGrow. Now, you can actually invoke the menu. Before you couldn't.
-
- The wNoHit configuration now excludes the menu bar. In other words, configuring
- a menu to be invoked by clicking outside of a window won't interfere with using
- the menu bar.
-
- /* TRASHING MACROS */
-
- No longer available. A questionable feature to begin with. You want to delete
- macros? Invoke ‘Macro Record’ twice in a row and then type the key assignment
- associated with the macro you want to delete.
-
- /* USING MACROS */
-
- Fixed a bug that didn't allow for macros to call other macros. Also, a macro
- assignment's priority has been changed. A macro assignment will override a
- 4Plus command. And if you're using some other macro utility, the utility's
- assignment will override 4Plus's assignment.
-
- Macros are saved and restored in this version.
-
- Macro assignments can be listed and changed via the configuration dialog in this
- version. Double clicking on an assignment will allow you to edit the macro.
-
- A new command called ‘Examine Assignment’ will allow you to edit a macro without
- having to go through the configuration dialog. Simply invoke the ‘Examine
- Assignment’ command, and invoke the desired macro assignment. You get a macro
- editing dialog.
-
- /* MACHEADERS MENU */
-
- Fixed a bug that prevented invoking the MacHeaders menu from within a source
- file contained in a project that DID NOT use MacsBug symbols (from THINK C's
- option dialog).
-
- /* SEARCHES */
-
- You can now assign searches to a key, like macros. Read the docs for more info.
-
- /* WINDOW POSITIONS */
-
- Assigning window positions to a key, like macros. Read the docs for more info.
-
- /* LAUNCHING DOCUMENTS FROM THE FINDER */
-
- Fixed a bug that prevented you from opening a THINK C file from the Finder under
- MF.
-
- /* USING DIFFERENT VOLUMES */
-
- Fixed a bug that prevented 4Plus from operating correctly in the event that
- THINK C and the current project resided on different volumes. This affected
- both the browsing menu facility as well as updating the resource header file.
-
- /* RECOGNIZING THINK C */
-
- Changed the way 4Plus detects a THINK C launch. Previous versions would look at
- the creator bytes of a launched application. The current version now looks at
- the application name. You can change the name 4Plus looks for by observing that
- the 'STR ' #129 resource contains the specification used to recognize THINK C.
-
- /* FIND DIALOG MENUS */
-
- Two pop up menus available within the Find dialog when the grep option is
- enabled. Read all about it in the docs.
-
- /* HEAP MANAGEMENT */
-
- Fixed a bug where the CODE resource was getting loaded and locked on startup.
- This little stinker was put in so as to allow a user to do an option-command
- doubleclick on the 4Plus icon from the Finder and get the configuration dialog.
- And I completely forgot about it. Here I am playing around with somebody else's
- application heap and I don't even bother to look at it. Duh.
-
- /* THE MARK QUEUE */
-
- Choosing the Trash Mark Queue item from the options menu no longer trashes THINK
- C. I'm also beginning to wonder about the mark queue. I never use the damn
- thing. Maybe individual marks would be better, eh? Each assignable to yet
- another keystroke? Or how about a mark stack? Once you go to a mark, it
- disappears. What do you think?
-
- /* MARK KEYS AND THE MARK STACK */
-
- Different implementations of the whole mark business. Read all about it in the
- docs.
-
- /* SUPERCLOCK, ON CUE, AND 4PLUS */
-
- INIT incompatibilities have become something of a fact of life for the avid Mac
- enthusiast, and I guess when you undertake writing an INIT it would be better to
- dispense with the fantasy of being the only programmer in the universe whose
- INIT plays well with others, thereby saving yourself the inevitable heartbreak
- that will befall you once you learn that it is, in fact, not so. I've tested
- 4Plus using a variety of INIT configurations, and it almost always works well
- regardless. The only instance of a problem occurs with when both SuperClock 3.8
- and On Cue 1.3 are being used. And I can't figure out why. The problem will
- occur when attempting tolaunch another application using On Cue. Every now and
- then, On Cue will allow you to select the application, but as soon as you
- release the mouse and the menu disappears, the Mac freezes. This is under
- MultiFinder 6.1b9 and System 6.0.5. Removing SuperClock will fix this. Don't
- ask me why, and of course, removing 4Plus will fix it too! I used Jasik's
- Debugger to take a look at the whole business and it tells me that the only
- patch SuperClock is patching is DrawMenuBar. Which makes me wonder how it is
- that SuperClock is getting those mouseDown events to toggle the clock settings.
- And what it's doing thereafter. I understand that there's a new version of
- SuperClock out, 3.9 I guess. Maybe it's a fix.
-
- /* TEXT SELECTION ANOMALY */
-
- Fixed a bug wherein under certain circumstances selecting text would invert a
- portionof the scroll bar.
-
- /* UPDATE RSRC.H CATASTROPHY */
-
- My humble apologies to anyone who tried to do a ‘Update “rsrc.h”’ when the
- rsrc.h file was open. It wasn't pretty. It now works. You should also note
- that it is possible to parse through a project resource file even if it is open
- from another application, like ResEdit. I'm opening it read only, and closing
- it immediately after I'm done with it, so there shouldn't be a problem. As to
- whether or not the parse will reflect changes that are currently pending via
- ResEdit will depend upon whether the file has been saved from within ResEdit.
- As a bonus, 4Plus will now append comments to each #define indicating the
- attributes that have been set for that resource.
-
-
- /*************************** VERSION 1.4 CHANGES ^1****************************/
-
- /* THE COMMENTS MENU */
-
- A new modifier key combination to remember! This should make going through this
- documentation a little easier, as well as find some limited use in code
- development. You can read all about it in the docs.
-
- /* KEY PROMPTS AND MACROS */
-
- The docs go on and on about how the ‘Repeat’ command is the only command that
- can't be recorded in a macro. Real programmers have no doubt discovered that
- this isn't true. Any command that resulted in the Key Prompt dialog (a 4Plus
- exclusive) being displayed would be recorded, but the subsequent keyDown event
- wouldn't be. Which, for example, made the Mark Keys facility somewhat useless
- when used from within a macro. This has been fixed. A side effect to this fix
- is that any time 4Plus is waiting for a keyDown event in this context, it won't
- accept anything else.
-
- /* SCROLLING */
-
- Fixed the ‘Page Up’ and ‘Page Down’ commands so that they should work with any
- kind of scroll bars, as well as those instances where the commands wouldn't work
- when the thumb was near the top or bottom of the window. As a consequence of
- the fix, it was easy to implement a ‘Scroll Up’ and ‘Scroll Down’ command.
- Dazzle your friends.
-
- /* TO REPEAT OR NOT TO REPEAT - MACROS */
-
- The whole macro/repeat business has been reevaluated, and many significant
- changes have come about as a result. Most notable amongst these changes is that
- a command or another macro may now be repeated within a macro. Many more
- commands now terminate a macro or the repeat command if they are unable to
- perform their respective functions. And certain 4Plus functions have been
- hardcoded so as to be "unrepeatable". The relevant sections in the docs have
- been rewritten so as to reflect these changes, so go check it out.
-
- /* UPDATE RSRC.H SPECIFICATION */
-
- As previously mentioned, the 'STR ' #128 resource within 4Plus contains the
- prefix for the filename to be used with the ‘Update “rsrc.h”’ command. 4Plus
- now allows for a wildcard to be specified, the wildcard will be replaced with
- the name of the currently open project. The wildcard character is the colon
- (':'), a little unusual perhaps but it's the only character I know of that can't
- be used in a Macintosh filename, so there shouldn't be any conflicts. As
- before, 4Plus will append the".h" to the name on it's own, so it
- needn't/shouldn't be specified in the resource. So...
-
- you're working on a project, let's call it foo.π...
- and the 'STR ' #128 in 4Plus is "\p:"...
- so the resource header file name will be “foo.π.h”
-
- /* ABOUT 4PLUS... */
-
- Choosing the ‘About 4Plus…’ item from the options menu is supposed to create
- this really neat “warping through the stars” effect somewhat analogous to the
- effect achieved by the ‘About THINK C’ item. Clicking on the mouse then gives
- you all the goodies about who, what and how much. I coded this to be compatible
- with all of the different monitor depths, including 24/32 bit. I've tested this
- on all of the different monitor depths, excluding 24/32 bit. Now, some of you
- are saying that it doesn't work, so I guess you've got 24/32 bit monitors. I've
- reviewed the logic,and I've made a tiny change with regards to determining what
- the screen depth is, so maybe it'll work now. As you might have guessed, I am
- writing directly to the screen. Spank me. MoveTo(x, y), Line(0, 0); wasn't
- cutting it, performance wise. About... screens shouldn't be the focus of any
- development effort, so if this doesn't work, I guess I'll have to go with the
- proven approach of presenting a modal dialog box instead.
-
- /* LAUNCHING MORE DOCUMENTS FROM THE FINDER */
-
- Provided a mechanism whereby both text files and project files may now be opened
- from the Finder under MF while THINK C is open. I would have thought that
- simply adding a couple of 'mst#' resources to THINK C would have accomplished
- this (as outlined in the “MultiFinder Revisited” tech note), but it seems as if
- you can only open project files at the expense of not being able to open text
- files with this approach. 4Plus now will add 'mstr' 102 & 103 resources to
- THINK C if they are not already present (4Plus uses the 'mstr's contained in
- it's own file). When a project is opened, 4Plus will set THINK C's 'mstr''s to
- point to the File menu's Open… item. When a project is closed, 4Plus will set
- the 'mstr''s to point to the Project menu's Open Project… item. Note that the
- only time the 'mstr''s are actually written to THINK C's resource file is at
- application launch, so that in the event you should decide to use THINK C
- without 4Plus, things should behave normally.
-
- /* MORE ABOUT SUPERCLOCK */
-
- I've been advised that SuperClock uses the jGNEFilter gizmo to get those
- mouseDowns in the menu bar, and that version 3.9 DOES solve the aforementioned
- incompatibility problem.
-
- /* SYSTEM 7.0 ^5 */
-
- I've been advised from a truly reliable source that 4Plus is compatible with
- System 7. So smoke 'em if you got 'em.
-
- /* SAM AND 4PLUS */
-
- Somebody has observed that 4Plus has a problem with SAM. Specifically, when SAM
- completes a scan on an inserted disk and closes the associated dialog, 4Plus
- hangs. So now one Symantec program has been rendered incompatible with another
- Symantec program... not bad for a few month's work! I don't have access to SAM,
- and without either buying SAM or getting a more robust bug report I won't be
- able to do anything about the problem, if in fact it's specific to 4Plus :)
-
- /* QUICKEYS AND 4PLUS */
-
- Using QuicKeys to do a “Home” or “End” evidently causes a problem with the
- “Power Thumb”. One solution is to disable the “Power Thumb” in the options menu
- while noting that it is still available by depressing the option key when
- thumbing.
-
- /* STILL MORE ABOUT RSRC.H */
-
- Located beneath the “Update ‘rsrc.h’” item in the options menu is a new item,
- “Update ‘proj.π.rsrc’”. What I'm trying to do here is a little insane... you
- can read all about it in the revised documentation.
-
- /* ANATOMY OF A REALLY NASTY BUG ^2*/
-
- Evidently there was a problem with 4Plus and older, 68000 based Macs which ranks
- as one of the stupidest things I've ever done. It goes something like this.
- The only patch 4Plus makes at startup is to InitGraf, which it does so as to be
- able to detect application launches (yes, I know about GetResource('CODE', 0),
- but it comes too early). 4Plus then does a GetFCBInfo call using CurApRefNum to
- see which application is getting launched, and if GetFCBInfo returns the string
- "\pTHINK C", it's off to Patch-O-Rama. The bummer with this is that the
- ShowINIT code by Paul Mercer calls InitGraf. And when InitGraf is called by
- ShowINIT, there is no current application so CurApRefNum is zero. So 4Plus then
- feeds GetFCBInfo a non-existent file reference number and GetFCBInfo does it's
- walk through the file control block array two bytes off the mark, all of which
- is enough to make the 68000 puke while the bigger CPU's merrily go on with the
- delusion that they're actually reading something meaningful.
-
- So 4Plus now looks at CurApRefNum, and if it's zero, it concludes that whoever
- it was that called InitGraf can't be THINK C.
-
- Apologies to all who were burned by this.
-
- /* VERSION TERRITORY */
-
- 4Plus now lets you edit your 'vers' resources. Additionally, the option exists
- wherein the version number will get bumped up by one each and every time you
- build your application/code resource/etc. Read all about it in the docs.
-
- /* OPEN HEADER */
-
- This feature was added sometime ago, but was omitted from the Version Notes. I
- elaborate in the docs.
-
- /* ENTER SELECTION TO REPLACE */
-
- Yet another command... this one does the same thing as THINK C's "Enter
- Selection" command except here we enter the selection as the replacement text.
-
- /* THE OPTIONS MENU AGAIN */
-
- I guess I didn't know what I was doing when I initially stuck the options menu
- in the menu bar, as is evident from the many reports I have received from people
- who say it doesn't play well with the other INITs, most notably MacroMaker.
-
- /* MACHEADERS MENU MISREPRESENTATION */
-
- The MacHeaders menu did not work with explicitly included precompiled headers,
- even though I said it did. In some instances, this also affected the ancestry
- menus as well. This has been fixed.
-
- /* ANCESTRY MENUS BUMMER */
-
- If you precompile any of your header files containing class declarations and if
- those header files utilized the #define _H_filename feature, 4Plus gave you
- incomplete results when attempting to use the ancestry menus. THINK C maintains
- information about every source file contained within a project (obviously), and
- part of that information relates to which header files are accessed by a source
- file. When THINK C sees an #include "filename.h" statement, it checks to see if
- the symbol _H_filename is defined, and if it is, THINK C doesn't bother
- including the file, and more importantly, doesn't associate the header file with
- the source file within the project. So 4Plus never knew it was there.
-
- This has now been addressed by a new preference setting, "Enable Tree Search".
- The name should say it all, but you can check out the docs. Note that there is
- a potential in this feature for those who don't precompile their header files
- that contain class declarations.
-
- /* METHODS MENU FIX */
-
- Fixed a problem with the methods menu wherein a comment inserted between the
- argument list and the method's open bracket prevented 4Plus from seeing the
- method.
-
- /* THE MARK THINGS DON'T ALWAYS WORK */
-
- That's because I was updating the marks on null events only, the thinking being
- that none of you were so fast at the keyboard so as to prevent a nullEvent from
- creeping into the event queue every now and then. Unfortunately, macro playback
- WAS fast at the keyboard... so fast that it did indeed prevent those precious
- nullEvents from spawning with the marks. So the deal now is that, when
- applicable, the appropriate marks get updated when appropriate... which means
- that the mark things are now working. Some other mark-related maintenance was
- done as well... if you've ever found anomalies in mark behaviour, please check
- the problem out again - chances are I've fixed it.
-
- /* COMMENTS */
-
- By far, the most requests for new features have been for some kind of facility
- to deal with commented code. One user wants a means to convert MPW/C++ style //
- comments into C style /* comments */. You can do this with grep... I've entered
- the expression into the grep menus and assigned a search utilizing that expression
- and created a macro that then performs the conversion with this version of
- 4Plus. Another user wants to be able to select text and then have 4Plus comment
- it. Well, the mark stack wasn't always working correctly with macros, but it is
- now (I think), so two macros has been created that will comment selected text -
- one for commenting out a portion of a single line of text and another for
- commenting out a block (multiple lines) of text. For the former, simply select
- the text to be commented and invoke the first macro... for the latter, select
- part of the first line and part of the last line to be block commented and
- invoke the second macro. To uncomment already commented text, I've provided a
- new 4Plus command, it's called “Select Comment” and it will select the commented
- portion of a document that contains the current selection range, if such a
- comment exists. As a result, I am including another macro that will uncomment
- already commented text... just stick the selection range somewhere within the
- comment and invoke the macro.
-
-